package com.draven.mq.receiver;


/**
 * 消息接收者 consumer
 * Qauthor draven
 *
 * @RabbitListener bindings:绑定队列  代表当前消费者监听的队列
 * @QueueBinding value:绑定队列的名称
 * exchange:配置交换器
 * key:路由键
 * @Queue value:配置队列名称
 * @Queue-队列。 value:队列名称
 * autoDelete:是否是一个临时队列。
 * true:当所有的consumer关闭后，自动删除queue。
 * false:当任意一个consumer启动并创建queue后，如果queue中有消息未消费，无论是否有consumer继续执行，都保存queue。
 * autoDelete:是否是一个可删除的临时队列
 * @Exchange value:为交换器起个名称
 * type:指定具体的交换器类型
 */


import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.stereotype.Component;

@Component
@RabbitListener(
        bindings = @QueueBinding(
                value = @Queue(value = "${mq.queue.info}", autoDelete = "true"),
                exchange = @Exchange(value = "${mq.config.exchange}", type = ExchangeTypes.TOPIC),
                key = "*.log.info"
        ))
public class InfoReceiver {
    /**
     * 通过RabbitMQ监听器接收消息并处理
     *
     * @param message 接收到的消息字符串
     */
    @RabbitHandler
    public void process(String message) {
        System.out.println("info Receiver: " + message);
    }
}
